//#ifndef WIDGET_FUNCA_SMART_CHAT_H
//#define WIDGET_FUNCA_SMART_CHAT_H

//#include <QWidget>
//#include <QTimer>
//#include <QFont>
//#include <QWidget>
//#include "ollamaapi.h"  // 假设你有这个头文件

//namespace Ui {
//class Widget_funcA_Smart_chat;
//}

//class Widget_funcA_Smart_chat : public QWidget {
//    Q_OBJECT
//public:
//    explicit Widget_funcA_Smart_chat(QWidget *parent = nullptr);
//    ~Widget_funcA_Smart_chat();

//private slots:
//    void onSendClicked();
//    void onAbortClicked();
//    void onResponseStream(const QString &partialResponse);
//    void onResponseFinished();
//    void onErrorOccurred(const QString &error);
    
//    void on_modelComboBox_activated(const QString &arg1);
    
//private:
//    void appendMessage(const QString &sender, const QString &message);
//    void updateUIState();

//    Ui::Widget_funcA_Smart_chat *ui;
//    OllamaAPI *m_ollama;
//    QString m_currentResponse; //AI回复信息
//    QString m_pendingMessage;  // 保存待发送的消息
//    bool m_isResponding;
//    // 新增：临时存储纯文本响应
//    QString m_streamingText;
//};
//#endif // WIDGET_FUNCA_SMART_CHAT_H

#ifndef WIDGET_FUNCA_SMART_CHAT_H
#define WIDGET_FUNCA_SMART_CHAT_H

#include <QWidget>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QString>
#include <QVBoxLayout>
#include "widget_smart_chat_message.h"

// 前向声明（避免循环引用，若OllamaAPI有单独头文件可直接包含）
class OllamaAPI;
class Widget_smart_chat_message;

namespace Ui {
class Widget_funcA_Smart_chat;
}

class Widget_funcA_Smart_chat : public QWidget
{
    Q_OBJECT

public:
    explicit Widget_funcA_Smart_chat(QWidget *parent = nullptr);
    ~Widget_funcA_Smart_chat();

private slots:
    // 发送按钮点击事件（核心交互）
    void onSendClicked();
    // 处理Ollama模型的流式响应
    void onResponseStream(const QString &partialResponse);
    // 处理Ollama模型响应完成
    void onResponseFinished();
    // 处理网络请求完成（智谱AI API）
    void onReplyFinished(QNetworkReply *reply);
    // 处理错误（Ollama/网络）
    void onErrorOccurred(const QString &error);
    // 中止按钮点击事件
    void onAbortClicked();
    // 模型选择框切换事件
    void onModelChanged(const QString &model);
    // 追加消息到聊天框（通用方法）
    void appendMessage(const QString &sender, const QString &message);
    // 更新UI控件状态（根据是否正在响应）
    void updateUIState();
    // 发送消息到智谱AI API（单独封装）
    void sendToZhipuAI(const QString &model, const QString &message);

private:
    Ui::Widget_funcA_Smart_chat *ui;          // UI对象指针
    OllamaAPI *m_ollama;                      // Ollama API对象（本地模型）
    QNetworkAccessManager *manager;           // 网络管理器（智谱AI API）
    QNetworkReply *currentReply;              // 当前网络请求（智谱AI）
    QString m_currentResponse;                // 累积AI响应内容（流式拼接）
    QString m_pendingMessage;                 // 待发送的用户消息（临时存储）
    bool m_isResponding;                      // 是否正在处理AI响应（状态标志）
};

#endif // WIDGET_FUNCA_SMART_CHAT_H
